Gut, also dann begrüße ich Sie zum finalen Akt, zur letzten Vorlesung in der Rechneraktur,
heute im Wintersemester. Ich habe eigentlich nicht mehr viel. Der Max war demassen fleißig,
ich hätte gar nicht erwartet, dass er jetzt da gleich das ganze Kapitel macht, aber er ist da
irgendwie durchgegangen, schön, muss ich auch nicht mehr so viel machen. Also er hat mir nur noch
gebeten, ich glaube am Ende war nicht so ganz klar, hat er gemeint, wie diese Abschätzung
da zustande kommt. Soll ich da noch mal ein paar Worte dazu sagen? Das könnte ich noch mal machen.
Ansonsten habe ich dann inhaltlich tatsächlich nichts mehr, dennoch durchaus interessante Sachen,
und zwar die Evaluation natürlich. Dann doch noch mal einen kleinen Hinweis auf eine Masterarbeit,
Projektarbeit oder sowas, die Doktoranden haben Ihnen ja schon ein bisschen was vorgestellt. Und
was nicht ganz unwichtig ist natürlich, ich mache immer in meinen Vorlesungen,
in der letzten Vorlesung, gehe ich noch mal so im Schnellverfahren durch die Folien ein bisschen
durch und gebe Ihnen Hinweise, was in der mündlichen Prüfung dann dran kommt und was ich nicht so
genau, ich meine, ich habe ja während der Vorlesung schon immer mal gesagt, so Folie hier, die könnte
vielleicht ganz interessant sein, falls wir uns mal treffen. Und somit man die natürlich nicht auf
der Straße irgendwo, aber das können wir dann eben heute noch mal machen und damit können wir
das heutige Programm gestalten. Ja, hallo, soll ich noch mal ein bisschen darauf eingehen oder sagen
Sie alle, ich mache es noch mal, die sechs Folien, dann gehe ich noch mal schnell durch. Ja, also das
Beispiel am Ende für einen parallelen Algorithmus war diese Matrix-Vektor-Multiplikation, die ich mir
da ausgesucht hatte und der Fall ist ja klar, wie schaut das Ganze im Seriellen aus? Ich habe also
hier eine, also bei der Matrix-Vektor-Multiplikation, wo ist sie? Hier ist die N mal N-Matrix, hier ist
der Vektor N mal 1 und wenn die Matrix N mal N ist, dann muss folglicherweise der Vektor M mal 1 sein,
also M zahlen eine Spalte und wie macht man das? Ja, üblicherweise eben über eine zweifach
verschachtelte Schleife, in dem ich Zeile mal Spalte eben hier durchrechne und ja, ist klar,
das können wir alle aus der Mathematik. Wir machen also aus der Grundlagenvorlesung Mathematik Zeile
mal Spalte und müssen eigentlich letztendlich N Skalarprodukte berechnen und pro Skalarprodukt
haben wir auch wieder einen Aufwand von O von N, N mal O von N, also haben wir das Ganze, wenn wir uns
jetzt das Leben noch ein bisschen einfacher machen, dass wir sagen, wir haben quadratische Matrizen,
dass wir nämlich mit zwei Parametern arbeiten müssen, eben einen Aufwand von O von N Quadrat und jetzt
gucken wir eben mal drauf, kann man das denn nicht irgendwie reduzieren, wenn wir parallelisieren? Und
wie ist jetzt da die Idee? Also wir machen eine Abbildung der Matrix auf eine, wie macht man das auf
so eine Parallelrechnerarchitektur und da gibt es im Prinzip zwei Arten, die Blockstreifenzerlegung
oder die Schachbrettzerlegung und was hat die Blockstreifenzerlegung? Die kann man zeilen
oder spaltenweise machen, also was soll das jetzt heißen? Ich nehme den Datensatz eben her, zerlege
den, zerlege das Ganze in Streifen und weiß die entsprechenden verteilten Datensätze, die jetzt
dabei entstehen, den einzelnen Prozessoren zu und die sollen jetzt eben darauf arbeiten, sollen jeweils
bestimmte Skalarprodukte berechnen und dazu muss der Vektor B, damit sie das können, auf all diese
Prozessoren verteilt werden. Ja, okay, wir betrachten jetzt mal nur die zahlenweise Zerlegung, bei
quadratischen Matrizen ist es relativ egal, ob ich eine zahlen- oder eine spaltenweise Zerlegung mache.
Ja, dann sieht man auch, dann muss, was muss dann jeder Prozessor rechnen, wenn also n mal n die
Gesamtdimension war und ich jetzt eben das Ganze hier aufteile, also die Anzahl der Spalten hier
bleibt gleich, ist ja klar und entlang der, entlang den Zahlen, ja entlang den Zahlen teile ich auf,
ich muss zwar immer überlegen, wenn man rennt entlang einer Spalte, aber das heißt eigentlich,
dass man die Zahlen nacheinander durchläuft, also laufe ich entlang den Zahlen hier in einer
festen Spalte zum Beispiel, dann kommt eben genau n durch p raus, so viel Daten muss jeder einzelne
Prozessor dann bearbeiten und ich muss natürlich dann gucken, dass das nicht so sehr, im Idealfall
ist n durch p ganzzahlig teilbar, das wird nicht immer der Fall sein, so schön ist das Leben nicht,
da muss ich natürlich gucken, dass ich einen Prozessor nicht überlasse, das heißt also n
durch p dividiert und das was dann als Rest üblich bleibt bei einer Motodivision sollte ich
gleichmäßig jeden eins mehr geben und damit kommt dann letztendlich raus, dass jeder Prozessor entweder
das Suprenum von n individuiert durch p bzw. das Individuum von n dividiert durch p an Matrix-Zahlen
Presenters
Zugänglich über
Offener Zugang
Dauer
01:19:05 Min
Aufnahmedatum
2013-02-06
Hochgeladen am
2019-04-30 03:59:03
Sprache
de-DE
-
Organisationsaspekte von CISC und RISC-Prozessoren
-
Behandlung von Hazards in Pipelines
-
Fortgeschrittene Techniken der dynamischen Sprungvorhersage
-
Fortgeschritten Cachetechniken, Cache-Kohärenz
-
Ausnutzen von Cacheeffekten
-
Architekturen von Digitalen Signalprozessoren
-
Architekturen homogener und heterogener Multikern-Prozessoren (Intel Corei7, Nvidia GPUs, Cell BE)
-
Architektur von Parallelrechnern (Clusterrechner, Superrechner)
-
Effiziente Hardware-nahe Programmierung von Mulitkern-Prozessoren (OpenMP, SSE, CUDA, OpenCL)
-
Leistungsmodellierung und -analyse von Multikern-Prozessoren (Roofline-Modell)
- Patterson/Hennessy: Computer Organization und Design
-
Hennessy/Patterson: Computer Architecture - A Quantitative Approach
-
Stallings: Computer Organization and Architecture
-
Märtin: Rechnerarchitekturen